package com.sg.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.wicket.okrapp.common.annotations.LikeFlag;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @author xxx
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("baa25157375c11ed87d500163e1b729d")
public class OmsTargetObjectivePlanExtend extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 下级是否向下分工 TRUE:是 FALSE:否
     */
    @TableField(value = "low_create_lower_indicator")
    @ApiModelProperty("下级是否向下分工")
    private String lowCreateLowerIndicator;

    /**
     * 下级向下分工责任主体类型 DEPT:部门 PERSONAL:个人 MIXTURE:混合
     */
    @TableField(value = "low_subordinate_div_body_type")
    @ApiModelProperty("下级向下分工责任主体类型")
    private String lowSubordinateDivBodyType;

    /**
     * 指标扩展规划设置ID
     */
    @TableId(value = "objective_planning_extend_id", type = IdType.UUID)
    @NotNull(message = "objectivePlanningExtendId不能为空")
    private String objectivePlanningExtendId;

    /**
     * 量化评分类型 COMPLETION_DEGREE:完成度 EVERY_ADD_AND_SUB:每加减 ACHIEVEMENT_LEVEL:成果等级
     */
    @TableField(value = "quantitative_rating_type")
    @ApiModelProperty("量化评分类型")
    private String quantitativeRatingType;

    /**
     * 归属指标ID
     */
    @TableField(value = "objective_id")
    @NotNull(message = "归属指标ID不能为空")
    @ApiModelProperty("归属指标ID")
    private String objectiveId;

    /**
     * 每加减实际值
     */
    @TableField(value = "actual_value_per_add_or_sub")
    @ApiModelProperty("每加减实际值")
    private Double actualValuePerAddOrSub;

    /**
     * 归属指标标识
     */
    @TableField(value = "objective_code")
    @NotNull(message = "归属指标标识不能为空")
    @ApiModelProperty("归属指标标识")
    @LikeFlag(likeType = "RIGHT_LIKE")
    private String objectiveCode;

    /**
     * 每加减实际值得分
     */
    @TableField(value = "actual_value_score_per_add_or_sub")
    @ApiModelProperty("每加减实际值得分")
    private Double actualValueScorePerAddOrSub;

    /**
     * 本级是否向下分工 TRUE:是 FALSE:否
     */
    @TableField(value = "create_lower_indicator")
    @NotNull(message = "本级是否向下分工不能为空")
    @ApiModelProperty("本级是否向下分工")
    private String createLowerIndicator;

    /**
     * 责任主体类型 PERSONAL:个人 DEPT:部门
     */
    @TableField(value = "resp_body_type")
    @ApiModelProperty("责任主体类型")
    private String respBodyType;

    /**
     * 是否上不封顶 TRUE:是 FALSE:否
     */
    @TableField(value = "is_ceiling_score")
    @ApiModelProperty("是否上不封顶")
    private String isCeilingScore;

    /**
     * 本级向下分工责任主体类型 PERSONAL:个人 DEPT:部门
     */
    @TableField(value = "subordinate_div_body_type")
    @ApiModelProperty("本级向下分工责任主体类型")
    private String subordinateDivBodyType;

    /**
     * 分工末级责任主体设置 FINAL_DEPARTMENT:末级部门 FINAL_PERSON:末级个人
     */
    @TableField(value = "lastt_liable_subject")
    @NotNull(message = "分工末级责任主体设置不能为空")
    @ApiModelProperty("分工末级责任主体设置")
    private String lasttLiableSubject;

    /**
     * 高层分工内容id
     */
    @TableField(value = "division_content_id")
    @ApiModelProperty("高层分工内容id")
    private String divisionContentId;

    /**
     * 高层分工内容类型编码 EQUATIVE_DEPT:同级部门 DEPT_TYPE:部门类型 PRESENT_DEPT:当前部门
     */
    @TableField(value = "division_cont_type")
    @NotNull(message = "分工内容类型编码不能为空")
    @ApiModelProperty("高层分工内容类型编码")
    private String divisionContType;

    /**
     * 高层向下分工层级编码 DEPT_END:部门结束 PUISNE_DEPT_END:下属部门结束 DEPT_PUISNE_STAFF_END:部门下属人员结束 PUISNE_DEPT_STAFF_END:下属部门人员结束
     */
    @TableField(value = "encode")
    @NotNull(message = "向下分工层级编码不能为空")
    @ApiModelProperty("高层向下分工层级编码")
    private String encode;

    /**
     * 高层向下分工部门类型二次设置 SELECTED_DEPARTMENT:水平选择的部门 SUBORDINATE_OF_SEL_DEP:垂直选择下属部门
     */
    @TableField(value = "set_again_type_code")
    @NotNull(message = "向下分工部门类型二次设置不能为空")
    @ApiModelProperty("高层向下分工部门类型二次设置")
    private String setAgainTypeCode;

    /**
     * 高层分工策略描述
     */
    @TableField(value = "division_desc")
    @ApiModelProperty("高层分工策略描述")
    private String divisionDesc;

    /**
     * 数量型指标当无实际值标记 TRUE:是 FALSE:否
     */
    @TableField(value = "quantity_objective_no_value")
    @NotNull(message = "数量型指标当无实际值标记不能为空")
    @ApiModelProperty("数量型指标当无实际值标记")
    private String quantityObjectiveNoValue;

    /**
     * 目标是否向下分工相同 TRUE:是 FALSE:否
     */
    @TableField(value = "target_division_same")
    @NotNull(message = "目标是否向下分工相同不能为空")
    @ApiModelProperty("目标是否向下分工相同")
    private String targetDivisionSame;

    /**
     * 指标汇报对象设置项编码 PRIMARY_TASK:一级建设任务 SECONDARY_TASK:二级建设任务 PRIMARY_OBSERVATION_POINT:二级以下建设任务或一级观测点 SECONDARY_OBSERVATION_POINT:二级观测点 OTHER_OBSERVATION_POINT:二级以下观测点
     */
    @TableField(value = "report_object_set_code")
    @NotNull(message = "指标汇报对象设置项编码不能为空")
    @ApiModelProperty("指标汇报对象设置项编码")
    private String reportObjectSetCode;

    /**
     * 目标周期分工是否相同 TRUE:是 FALSE:否
     */
    @TableField(value = "target_period_division_same")
    @ApiModelProperty("目标周期分工是否相同")
    private String targetPeriodDivisionSame;

    /**
     * 是否开启预算 TRUE:是 FALSE:否
     */
    @TableField(value = "is_use_budget")
    @NotNull(message = "是否开启预算不能为空")
    @ApiModelProperty("是否开启预算")
    private String isUseBudget;

    /**
     * 批次标识
     */
    @TableField(value = "batch_code")
    @ApiModelProperty("批次标识")
    private String batchCode;

    /**
     * 冗余评价模板ID
     */
    @TableField(value = "evaluation_template_id")
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 创建于批次标识
     */
    @TableField(value = "create_batch_code")
    @ApiModelProperty("创建于批次标识")
    private String createBatchCode;

    /**
     * 批次开始时间
     */
    @TableField(value = "batch_start_time")
    @ApiModelProperty("批次开始时间")
    private Date batchStartTime;

    /**
     * 是否开启预算末级个人汇报 TRUE:是 FALSE:否
     */
    @TableField(value = "is_open_budget_manual_report")
    @NotNull(message = "是否开启预算末级个人汇报不能为空")
    @ApiModelProperty("是否开启预算末级个人汇报")
    private String isOpenBudgetManualReport;

    /**
     * 批次结束时间
     */
    @TableField(value = "batch_endt_time")
    @NotNull(message = "批次结束时间不能为空")
    @ApiModelProperty("批次结束时间")
    private Date batchEndtTime;

    /**
     * 是否开启自定义汇报 TRUE:是 FALSE:否
     */
    @TableField(value = "is_open_custom_report")
    @NotNull(message = "是否开启自定义汇报不能为空")
    @ApiModelProperty("是否开启自定义汇报")
    private String isOpenCustomReport;

    /**
     * 批次下是否更新 TRUE:是 FALSE:否
     */
    @TableField(value = "is_update")
    @NotNull(message = "批次下是否更新不能为空")
    @ApiModelProperty("批次下是否更新")
    private String isUpdate;

    /**
     * 是否开启自定义执行周期 TRUE:是 FALSE:否
     */
    @TableField(value = "is_open_custom_execute_cycle")
    @ApiModelProperty("是否开启自定义执行周期")
    private String isOpenCustomExecuteCycle;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @TableField(value = "update_status")
    @NotNull(message = "批次下更新状态不能为空")
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;

    /**
     * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
     */
    @TableField(value = "archivng_type")
    @NotNull(message = "存档类型不能为空")
    @ApiModelProperty("存档类型")
    private String archivngType;

    /**
     * 是否未来 TRUE:是 FALSE:否
     */
    @TableField(value = "is_editing")
    @NotNull(message = "是否未来不能为空")
    @ApiModelProperty("是否未来")
    private String isEditing;

    /**
     * 是否存档 TRUE:是 FALSE:否
     */
    @TableField(value = "is_archive")
    @NotNull(message = "是否存档不能为空")
    @ApiModelProperty("是否存档")
    private String isArchive;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @TableField(value = "subject_life_cycle")
    @NotNull(message = "主体生命周期不能为空")
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 操作人就职记录ID
     */
    @TableField(value = "operation_induction_id")
    @NotNull(message = "操作人就职记录ID不能为空")
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 创建人就职记录ID
     */
    @TableField(value = "create_induction_id")
    @NotNull(message = "创建人就职记录ID 不能为空")
    @ApiModelProperty("创建人就职记录ID ")
    private String createInductionId;

    /**
     * 发布人就职记录ID
     */
    @TableField(value = "release_induction_id")
    @ApiModelProperty("发布人就职记录ID")
    private String releaseInductionId;

    /**
     * OKR目标属性 OBJECTIVES:目标O KEY_RESULTS:关键成果KR
     */
    @TableField(value = "indicator_kind")
    @ApiModelProperty("OKR目标属性")
    private String indicatorKind;

    /**
     * 存档人就职记录ID
     */
    @TableField(value = "archive_induction_id")
    @ApiModelProperty("存档人就职记录ID")
    private String archiveInductionId;

    /**
     * 是否自定义OKR目标 TRUE:是 FALSE:否
     */
    @TableField(value = "is_custom_objective")
    @ApiModelProperty("是否自定义OKR目标")
    private String isCustomObjective;

    /**
     * 操作时间
     */
    @TableField(value = "operate_time")
    @NotNull(message = "操作时间不能为空")
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 是否启用标杆 TRUE:是 FALSE:否
     */
    @TableField(value = "is_use_benchmark")
    @ApiModelProperty("是否启用标杆")
    private String isUseBenchmark;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @NotNull(message = "创建时间不能为空")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 是否过程重点关注 TRUE:是 FALSE:否
     */
    @TableField(value = "is_process_focus")
    @ApiModelProperty("是否过程重点关注")
    private String isProcessFocus;

    /**
     * 发布时间
     */
    @TableField(value = "release_time")
    @NotNull(message = "发布时间不能为空")
    @ApiModelProperty("发布时间")
    private Date releaseTime;

    /**
     * 是否开启成果对接 TRUE:是 FALSE:否
     */
    @TableField(value = "is_symbolic_achievements")
    @ApiModelProperty("是否开启成果对接")
    private String isSymbolicAchievements;

    /**
     * 存档时间
     */
    @TableField(value = "archive_time")
    @NotNull(message = "存档时间不能为空")
    @ApiModelProperty("存档时间")
    private Date archiveTime;

    /**
     * 是否作废 TRUE:是 FALSE:否
     */
    @TableField(value = "is_valid")
    @NotNull(message = "是否作废不能为空")
    @ApiModelProperty("是否作废")
    private String isValid;

    /**
     * 创建于空间ID
     */
    @TableField(value = "space_id")
    @NotNull(message = "创建于空间ID不能为空")
    @ApiModelProperty("创建于空间ID")
    private String spaceId;

    /**
     * 创建于联盟应用ID
     */
    @TableField(value = "app_id")
    @NotNull(message = "创建于联盟应用ID不能为空")
    @ApiModelProperty("创建于联盟应用ID")
    private String appId;

    /**
     * 是否用于一级部门 TRUE:是 FALSE:否
     */
    @TableField(value = "is_use_first_dept")
    @ApiModelProperty("是否用于一级部门")
    private String isUseFirstDept;

    /**
     * 是否目标下发 TRUE:是 FALSE:否
     */
    @TableField(value = "is_first_objective")
    @ApiModelProperty("是否目标下发")
    private String isFirstObjective;

    /**
     * 填报设置是否完成 TRUE:是 FALSE:否
     */
    @TableField(value = "is_done_filleout_set")
    @ApiModelProperty("填报设置是否完成")
    private String isDoneFilleoutSet;

    /**
     * 与父级责任主体是否相同 TRUE:是 FALSE:否
     */
    @TableField(value = "and_parent_body_is_identical")
    @ApiModelProperty("与父级责任主体是否相同")
    private String andParentBodyIsIdentical;

    /**
     * 评价设置是否完成 TRUE:是 FALSE:否
     */
    @TableField(value = "is_done_evaluate_set")
    @ApiModelProperty("评价设置是否完成")
    private String isDoneEvaluateSet;
}
